package agent;
import jade.core.Agent;
import jade.core.behaviours.Behaviour;

import java.util.ArrayList;
import java.util.Iterator;

import model.Coordenada;
import model.Stop;
import dao.DaoAgente;


public class CpBuscaStopInicial extends Behaviour{
	private static final long serialVersionUID = 1L;
	
	
	int raioOrigem;
	Coordenada origem;
	Coordenada destino;
	ArrayList<Stop> stopsOrigem;
	DaoAgente dao;
	String msg;

	

	CpBuscaStopInicial(Agent agente, Coordenada origem, Coordenada destino){
		super(agente);
		this.origem = origem;
		this.destino = destino;
		this.raioOrigem = 0;
		this.stopsOrigem = new ArrayList<Stop>();
		this.dao = new DaoAgente();
	}
	
	//executado enquanto done() retorne false
	public void action() {
		System.out.println("Exec comportamento...");
		raioOrigem++;
		stopsOrigem = dao.getStopsOfCoordRaio(origem.getLat(), origem.getLon(), raioOrigem);
	}

	//Se retornar true o comportamento e finalizado
	public boolean done() {
		if(stopsOrigem.size()>0){
			System.out.println("Acchei "+stopsOrigem.size()+" pontos em raio = "+raioOrigem);		
			return true;
		}
		for(int i=0; i<stopsOrigem.size(); i++){
			double distStop = destino.calculaDistancia(stopsOrigem.get(i).getStop_lat(), stopsOrigem.get(i).getStop_lon());
			double distOrgDstn = origem.calculaDistancia(destino.getLat(),destino.getLon());
			if(distStop <= 1000){
				System.out.println("Raio origem proximo do destino...");
				return true;
			}
			if(distOrgDstn <= 600){
				System.out.println("Destino proximo demais da origem...");
				return true;
			}
		}
		
		return false;
	}

}
